home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / Bankperfect / bp.exe / Scripts / Export CSV / export_csv.py < prev   
Text File  |  2007-03-18  |  8KB  |  179 lines

  1. #1.8
  2. import BP
  3.  
  4. Ctg = {}
  5. for i, c in enumerate(BP.CategName):
  6.   p = c.find("=")
  7.   Idx = int(c[:p])
  8.   c = c[p+1:].strip()
  9.   Parent = BP.CategName[BP.CategParent[i]]
  10.   p = Parent.find("=")
  11.   PIdx = int(Parent[:p])
  12.   Parent = Parent[p+1:].strip()
  13.   if Idx == PIdx: Ctg[Idx] = [c]
  14.   else: Ctg[Idx] = [c, Parent]
  15.  
  16. def CtgName(index, SubOnly):
  17.   if not Ctg.has_key(index): return ""
  18.   
  19.   c = Ctg[index]
  20.   IsParent = len(c) == 1
  21.   if SubOnly:
  22.     if IsParent: return ""
  23.     else: return c[0]
  24.  
  25.   if IsParent: return c[0]
  26.   if CKGroup.Checked: return "%s%s%s" %(c[1], ECtgSep.Text, c[0])
  27.   return c[1]
  28.  
  29. def Export(Acc):
  30.   dates = [d.replace("-", "/") for d in BP.OperationDate[Acc]]
  31.   modes = []
  32.   for m in BP.OperationMode[Acc]:
  33.     if CKNoNum.Checked and m.find("Chq") == 0: m = "ChΦque Θmis"
  34.     modes.append(m)
  35.   third = [p.replace(Comma, " ") for p in BP.Operationthirdparty[Acc]]
  36.   info = [d.replace(Comma, " ") for d in BP.OperationDetails[Acc]]
  37.   categs = [CtgName(i, 0) for i in BP.OperationCateg[Acc]]
  38.   subs = [CtgName(i, 1) for i in BP.OperationCateg[Acc]]
  39.   vals = [str(v).replace(".", ",") for v in BP.OperationAmount[Acc]]
  40.   mark = [(EMrk1.Text, EMrk2.Text, EMrk3.Text)[m] for m in BP.OperationMark[Acc]]
  41.   
  42.   fields = []
  43.   if CKDte.Checked: fields.append( (CBDte.ItemIndex, "Date", dates) )
  44.   if CKMod.Checked: fields.append( (CBMod.ItemIndex, "Mode", modes) )
  45.   if CKWho.Checked: fields.append( (CBWho.ItemIndex, "Tiers", third) )
  46.   if CKInf.Checked: fields.append( (CBInf.ItemIndex, "DΘtails", info) )
  47.   if CKCtg.Checked: fields.append( (CBCtg.ItemIndex, "CatΘgorie", categs) )
  48.   if CKSub.Checked and not CKGroup.Checked: fields.append( (CBSub.ItemIndex, "Sous-catΘgorie", subs) )
  49.   if CKVal.Checked: fields.append( (CBVal.ItemIndex, "Montant", vals) )
  50.   if CKMrk.Checked: fields.append( (CBMrk.ItemIndex, "Pointage", mark) )
  51.   fields.sort()
  52.  
  53.   if len(fields) == 0: return ""
  54.   if CKHead.Checked: records  = [Comma.join([f[1] for f in fields])]
  55.   else: records = []
  56.  
  57.   line_count = len(fields[0][2])
  58.   if all: lines_indexes = range(line_count)
  59.   else: lines_indexes = BP.VisibleLines()
  60.   for i in lines_indexes:
  61.     line = []
  62.     for f in fields: line.append(f[2][i])
  63.     records.append(Comma.join(line))
  64.  
  65.   csv_file = "%s - %s.csv" %(BP.BankPerfectFileName()[:-3], BP.AccountName[Acc])
  66.   
  67.   try:
  68.     open(csv_file, "w").write("\n".join(records))
  69.     if not all: BP.MsgBox("Le fichier %s a ΘtΘ crΘΘ" %csv_file, 0)
  70.   except:
  71.     BP.MsgBox("Impossible de crΘer le fichier %s" %csv_file, 0)
  72.   return ""
  73.  
  74.  
  75.  
  76.  
  77. cs, lb, ck, cb = "csDropDownList", "TLabel", "TCheckBox", "TComboBox"
  78. c = "\n".join([str(i) for i in range(1, 9)])
  79. f = CreateComponent("TForm", None)
  80. f.SetProps(Caption="ParamΦtres de l'export", Width=520, Height=370, Position="poMainFormCenter", BorderStyle="bsSingle", BorderIcons=["biSystemMenu"])
  81. L0 = CreateComponent(lb, f)
  82. L0.SetProps(Parent=f, Left=20, Top=20, Caption="Exporter le champ")
  83. L0.Font.Style = ["fsBold"]
  84. L1 = CreateComponent(lb, f)
  85. L1.SetProps(Parent=f, Left=130, Top=20, Caption="Ordre")
  86. L1.Font.Style = ["fsBold"]
  87. L2 = CreateComponent(lb, f)
  88. L2.SetProps(Parent=f, Left=220, Top=20, Caption="Options d'export")
  89. L3 = CreateComponent(lb, f)
  90. L3.SetProps(Parent=f, Left=220, Top=52, Caption="SΘparer les champs par :")
  91. L4 = CreateComponent(lb, f)
  92. L4.SetProps(Parent=f, Left=220, Top=188, Caption="dans le mΩme champ en les sΘparant par :")
  93. L5 = CreateComponent(lb, f)
  94. L5.SetProps(Parent=f, Left=220, Top=224, Caption="Symboles spΘcifiant qu'une opΘration est :")
  95. L6 = CreateComponent(lb, f)
  96. L6.SetProps(Parent=f, Left=220, Top=244, Caption="non pointΘe / pointΘe / rapprochΘe :")
  97. CBDte = CreateComponent(cb, f)
  98. CBDte.SetProps(Parent=f, Left=132, Top=48, Width=44, Style=cs)
  99. CBDte.Items.Text = c
  100. CBDte.ItemIndex = 0
  101. CKDte = CreateComponent(ck, f)
  102. CKDte.SetProps(Parent=f, Left=20, Top=48, Width=100, Caption="Date", Checked=1)
  103. CKMod = CreateComponent(ck, f)
  104. CKMod.SetProps(Parent=f, Left=20, Top=76, Width=100, Caption="Mode", Checked=1)
  105. CBMod = CreateComponent(cb, f)
  106. CBMod.SetProps(Parent=f, Left=132, Top=76, Width=44, Style=cs)
  107. CBMod.Items.Text = c
  108. CBMod.ItemIndex = 1
  109. CKWho = CreateComponent(ck, f)
  110. CKWho.SetProps(Parent=f, Left=20, Top=104, Width=100, Caption="Tiers", Checked=1)
  111. CBWho = CreateComponent(cb, f)
  112. CBWho.SetProps(Parent=f, Left=132, Top=104, Width=44, ItemIndex=0, Style=cs)
  113. CBWho.Items.Text = c
  114. CBWho.ItemIndex = 2
  115. CKInf = CreateComponent(ck, f)
  116. CKInf.SetProps(Parent=f, Left=20, Top=132, Width=100, Caption="DΘtails", Checked=1)
  117. CBInf = CreateComponent(cb, f)
  118. CBInf.SetProps(Parent=f, Left=132, Top=132, Width=44, ItemIndex=0, Style=cs)
  119. CBInf.Items.Text = c
  120. CBInf.ItemIndex = 3
  121. CKCtg = CreateComponent(ck, f)
  122. CKCtg.SetProps(Parent=f, Left=20, Top=160, Width=100, Caption="CatΘgorie", Checked=1)
  123. CBCtg = CreateComponent(cb, f)
  124. CBCtg.SetProps(Parent=f, Left=132, Top=160, Width=44, ItemIndex=0, Style=cs)
  125. CBCtg.Items.Text = c
  126. CBCtg.ItemIndex = 4
  127. CKSub = CreateComponent(ck, f)
  128. CKSub.SetProps(Parent=f, Left=20, Top=188, Width=100, Caption="Sous-catΘgorie", Checked=1)
  129. CBSub = CreateComponent(cb, f)
  130. CBSub.SetProps(Parent=f, Left=132, Top=188, Width=44, ItemIndex=0, Style=cs)
  131. CBSub.Items.Text = c
  132. CBSub.ItemIndex = 5
  133. CKVal = CreateComponent(ck, f)
  134. CKVal.SetProps(Parent=f, Left=20, Top=216, Width=100, Caption="Montant", Checked=1)
  135. CBVal = CreateComponent(cb, f)
  136. CBVal.SetProps(Parent=f, Left=132, Top=216, Width=44, ItemIndex=0, Style=cs)
  137. CBVal.Items.Text = c
  138. CBVal.ItemIndex = 6
  139. CKMrk = CreateComponent(ck, f)
  140. CKMrk.SetProps(Parent=f, Left=20, Top=244, Width=100, Caption="Pointage", Checked=1)
  141. CBMrk = CreateComponent(cb, f)
  142. CBMrk.SetProps(Parent=f, Left=132, Top=244, Width=44, ItemIndex=0, Style=cs)
  143. CBMrk.Items.Text = c
  144. CBMrk.ItemIndex = 7
  145. CBSep = CreateComponent(cb, f)
  146. CBSep.SetProps(Parent=f, Left=354, Top=48, Width=56, Style=cs)
  147. CBSep.Items.Text = ";\n,\nTAB\r\n"
  148. CBSep.ItemIndex = 0
  149. CKAll = CreateComponent(ck, f)
  150. CKAll.SetProps(Parent=f, Left=220, Top=90, Width=224, Caption="Exporter tous les comptes", Checked=0)
  151. CKHead = CreateComponent(ck, f)
  152. CKHead.SetProps(Parent=f, Left=220, Top=114, Width=224, Caption="Inclure la ligne d'en-tΩte", Checked=1)
  153. CKNoNum = CreateComponent(ck, f)
  154. CKNoNum.SetProps(Parent=f, Left=220, Top=138, Width=252, Caption="Remplacer \"Chq XXX\" par \"ChΦque Θmis\"", Checked=0)
  155. CKGroup = CreateComponent(ck, f)
  156. CKGroup.SetProps(Parent=f, Left=220, Top=168, Width=222, Caption="Grouper catΘgorie et sous-catΘgorie", Checked=0)
  157. ECtgSep = CreateComponent("TEdit", f)
  158. ECtgSep.SetProps(Parent=f, Left=436, Top=182, Width=54, Text=" > ")
  159. EMrk1 = CreateComponent("TEdit", f)
  160. EMrk1.SetProps(Parent=f, Left=436, Top=238, Width=16, Text="-")
  161. EMrk2 = CreateComponent("TEdit", f)
  162. EMrk2.SetProps(Parent=f, Left=454, Top=238, Width=16, Text="P")
  163. EMrk3 = CreateComponent("TEdit", f)
  164. EMrk3.SetProps(Parent=f, Left=472, Top=238, Width=16, Text="R")
  165. BCnl = CreateComponent("TButton", f)
  166. BCnl.SetProps(Parent=f, Left=171, Top=294, Width=90, Height=25, Caption="Annuler", Cancel=1, ModalResult=2)
  167. BOK = CreateComponent("TButton", f)
  168. BOK.SetProps(Parent=f, Left=271, Top=294, Width=90, Height=25, Caption="Exporter >>", ModalResult=1, Default=1)
  169.  
  170. if f.ShowModal() == 1:
  171.   Comma  = [";", ",", "\t"][CBSep.ItemIndex]
  172.   all = CKAll.Checked
  173.  
  174.   if all:
  175.     for Acc in range(BP.AccountCount()):
  176.       Export(Acc)
  177.     BP.MsgBox("Les fichiers CSV ont ΘtΘ crΘΘs dans le mΩme dossier que votre fichier .bp", 0)
  178.   else:
  179.     Export(BP.AccountCurrent())